C
C     ..................................................................
C
C        SUBROUTINE DMATX
C
C        PURPOSE
C           COMPUTE MEANS OF VARIABLES IN EACH GROUP AND A POOLED
C           DISPERSION MATRIX FOR ALL THE GROUPS. NORMALLY THIS SUB-
C           ROUTINE IS USED IN THE PERFORMANCE OF DISCRIMINANT ANALYSIS.
C
C        USAGE
C           CALL DMATX (K,M,N,X,XBAR,D,CMEAN)
C
C        DESCRIPTION OF PARAMETERS
C           K     - NUMBER OF GROUPS
C           M     - NUMBER OF VARIABLES (MUST BE THE SAME FOR ALL
C                   GROUPS).
C           N     - INPUT VECTOR OF LENGTH K CONTAINING SAMPLE SIZES OF
C                   GROUPS.
C           X     - INPUT VECTOR CONTAINING DATA IN THE MANNER EQUIVA-
C                   LENT TO A 3-DIMENSIONAL FORTRAN ARRAY, X(1,1,1),
C                   X(2,1,1), X(3,1,1), ETC.  THE FIRST SUBSCRIPT IS
C                   CASE NUMBER, THE SECOND SUBSCRIPT IS VARIABLE NUMBER
C                   AND THE THIRD SUBSCRIPT IS GROUP NUMBER.  THE
C                   LENGTH OF VECTOR X IS EQUAL TO THE TOTAL NUMBER OF
C                   DATA POINTS, T*M, WHERE T = N(1)+N(2)+...+N(K).
C           XBAR  - OUTPUT MATRIX (M X K) CONTAINING MEANS OF VARIABLES
C                   IN K GROUPS.
C           D     - OUTPUT MATRIX (M X M) CONTAINING POOLED DISPERSION.
C           CMEAN - WORKING VECTOR OF LENGTH M.
C
C        REMARKS
C           THE NUMBER OF VARIABLES MUST BE GREATER THAN OR EQUAL TO
C           THE NUMBER OF GROUPS.
C
C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
C           NONE
C
C        METHOD
C           REFER TO 'BMD COMPUTER PROGRAMS MANUAL', EDITED BY W. J.
C           DIXON, UCLA, 1964, AND T. W. ANDERSON, 'INTRODUCTION TO
C           MULTIVARIATE STATISTICAL ANALYSIS', JOHN WILEY AND SONS,
C           1958, SECTION 6.6-6.8.
C
C     ..................................................................
C
      SUBROUTINE DMATX (K,M,N,X,XBAR,D,CMEAN)
      DIMENSION N(1),X(1),XBAR(1),D(1),CMEAN(1)
C
C        ...............................................................
C
C        IF A DOUBLE PRECISION VERSION OF THIS ROUTINE IS DESIRED, THE
C        C IN COLUMN 1 SHOULD BE REMOVED FROM THE DOUBLE PRECISION
C        STATEMENT WHICH FOLLOWS.
C
C     DOUBLE PRECISION XBAR,D,CMEAN
C
C        THE C MUST ALSO BE REMOVED FROM DOUBLE PRECISION STATEMENTS
C        APPEARING IN OTHER ROUTINES USED IN CONJUNCTION WITH THIS
C        ROUTINE.
C
C        ...............................................................
C
C     INITIALIZATION
C
      MM=M*M
      DO 100 I=1,MM
  100 D(I)=0.0
C
C     CALCULATE MEANS
C
      N4=0
      L=0
      LM=0
      DO 160 NG=1,K
      N1=N(NG)
      FN=N1
      DO 130 J=1,M
      LM=LM+1
      XBAR(LM)=0.0
      DO 120 I=1,N1
      L=L+1
  120 XBAR(LM)=XBAR(LM)+X(L)
  130 XBAR(LM)=XBAR(LM)/FN
C
C     CALCULATE SUMS OF CROSS-PRODUCTS OF DEVIATIONS
C
      LMEAN=LM-M
      DO 150 I=1,N1
      LL=N4+I-N1
      DO 140 J=1,M
      LL=LL+N1
      N2=LMEAN+J
  140 CMEAN(J)=X(LL)-XBAR(N2)
      LL=0
      DO 150 J=1,M
      DO 150 JJ=1,M
      LL=LL+1
  150 D(LL)=D(LL)+CMEAN(J)*CMEAN(JJ)
  160 N4=N4+N1*M
C
C     CALCULATE THE POOLED DISPERSION MATRIX
C
      LL=-K
      DO 170 I=1,K
  170 LL=LL+N(I)
      FN=LL
      DO 180 I=1,MM
  180 D(I)=D(I)/FN
C
      RETURN
      END
